<?php

require_once 'C:\xampp\htdocs\e-pizza.com\application\classesAuxiliares\Carrinho.php';

class MeusDadosController extends Zend_Controller_Action {
	
	private $formularioEntrar = null;
	
	private $formularioCadastrar = null;
	
	private $usuarioMapper = null;
	
	private $produtoMapper = null;
	
	private $pedidoMapper = null;
	
	private $pedidoProdutoMapper = null;
	
	private $carrinho = null;
	
	public function init() {
		session_start ();
		
		if (! isset ( $_SESSION ["carrinho"] )) {
			$this->carrinho = new Carrinho ();
		} else {
			$this->carrinho = $_SESSION ["carrinho"];
		}
		
		$this->usuarioMapper = new Application_Model_UsuarioMapper ();
		$this->produtoMapper = new Application_Model_ProdutoMapper ();
		$this->pedidoMapper = new Application_Model_PedidoMapper ();
		$this->pedidoProdutoMapper = new Application_Model_ProdutosDoPedidoMapper ();
	
	}
	
	public function indexAction() {
		

		
		if (isset($_SESSION["aviso"]["usuarioAlterado"])){
			$this->view->alterado = TRUE;
			$_SESSION["aviso"]["usuarioAlterado"] = NULL;
		}else{
			$this->view->alterado = FALSE;
		}
		
		$this->view->title = "Finalizando pedido";
		
		$this->view->formEntrar = new Application_Form_Entrar ();
		$this->view->formCadastrar = new Application_Form_Cadastrar ();
	
	}
	
	public function cadastrarAction() {
		$this->view->title = "Cadastro de usuario";
		
		$this->view->aviso = NULL;
		
		$params = $this->getRequest ()->getParams ();
		
		$usuario = new Application_Model_Usuario ();
		
		$usuario->setIdUsuario ( NULL );
		$usuario->setNome ( $params ["nome"] );
		$usuario->setEndereco ( $params ["endereco"] );
		$usuario->setLoginEmail ( $params ["email"] );
		$usuario->setSenha ( sha1 ( $params ["senha"] ) );
		
		$existe = $this->usuarioMapper->verificarEmail ( $params ["email"] );
		
		if ($existe == NULL) {
			$resultado = $this->usuarioMapper->cadastrarUsuario ( $usuario );
			$dadosUsuario = array ("id" => $resultado, "nome" => $usuario->getNome () );
			
			session_start ();
			$_SESSION ["dadosUsuario"] = $dadosUsuario;
			
			$this->_helper->redirector ( "pagamento", "meus-dados" );
		
		} else {
			$aviso = "E-mail utilizado ja esta cadastrado em nosso sistema!";
			
			$this->view->aviso = $aviso;
		}
	
	}
	
	public function entrarAction() {

		$aviso = NULL;
		
		$params = $this->getRequest ()->getParams ();
		$usuario = new Application_Model_Usuario ();
		
		$email = $params ["email"];
		$senha = sha1 ( $params ["senha"] );
		

		
		$dados = $this->usuarioMapper->login ( $email, $senha );
		
		// var_dump ( $dados );
		
		if ($dados == NULL){
			$this->view->title = "Meus dados";
			$aviso = "O nome de usu&aacute;rio ou a senha inserido est&aacute; incorreto";
		} else {
			session_start ();
			$dadosUsuario = array ("id" => $dados ["id_usuario"], "nome" => $dados ["nome"] );
			$_SESSION ["dadosUsuario"] = $dadosUsuario;
		
		}
		
		$this->view->dados = $dados;
		$this->view->aviso = $aviso;
	
	}
	
	public function pagamentoAction() {
		
		$usuarioSessao = $_SESSION ["dadosUsuario"];
		
		$dadosUsuario = $this->usuarioMapper->buscarUsuarioPeloId ( ($usuarioSessao ["id"]) );
		
		$listaId = $this->carrinho->getListaProdutos ();
		
		foreach ( $listaId as $idProduto ) {
			$produto = $this->produtoMapper->buscarPeloId ( $idProduto );
			$listaProduto [] = $produto;
		}
		
		$this->view->dadosUsuario = $dadosUsuario;
		$this->view->listaProdutos = $listaProduto;
	
	}
	
	public function pagamentoFinalizadoAction() {
		if (! isset ( $_SESSION ["dadosUsuario"] )) {
			$this->_helper->redirector ( "index", "default" );
		}
		
		$usuarioSessao = $_SESSION ["dadosUsuario"];
		$dadosUsuario = $this->usuarioMapper->buscarUsuarioPeloId ( ($usuarioSessao ["id"]) );
		
		$listaId = $this->carrinho->getListaProdutos ();
		
		$totalPedido = NULL;
		
		foreach ( $listaId as $idProduto ) {
			$produto = $this->produtoMapper->buscarPeloId ( $idProduto );
			$listaProduto [] = $produto;
			
			$totalPedido += $produto [0] ["preco"];
		}
		
		$this->view->dadosUsuario = $dadosUsuario;
		$this->view->listaProdutos = $listaProduto;
		
		$formaPagamento = $this->getRequest ()->getParam ( "formaPag" );
		
		$dadosPedido ["usuario"] = $dadosUsuario;
		$dadosPedido ["pedido"] = $listaProduto;
		$dadosPedido ["formaPagamento"] = $formaPagamento;
		$dadosPedido ["total"] = $totalPedido;
		
		$pedido = new Application_Model_Pedido ();
		
		// persistindo PEDIDO
		$pedido->setEnderecoEntrega ( $dadosUsuario [0] ["endereco"] );
		$pedido->setIdUsuario ( $dadosUsuario [0] ["id_usuario"] );
		$pedido->setValorTotal ( $totalPedido );
		$pedido->setFormaPagamento ( $formaPagamento );
		
		$idPedido = $this->pedidoMapper->novoPedido ( $pedido );
		
		echo "<br><hr><br>";
		// persistindo PRODUTO_DO_PEDIDO
		foreach ( $listaProduto as $produtoPedido ) {
			foreach ( $produtoPedido as $dadosProduto ) {
				
				$novoProdutoPedido = new Application_Model_ProdutosDoPedido ();
				
				$novoProdutoPedido->setIdProdutoPedido ( NULL );
				$novoProdutoPedido->setIdProduto ( $dadosProduto ["id_produto"] );
				$novoProdutoPedido->setIpPedido ( $idPedido );
				$novoProdutoPedido->setValorProduto ( $dadosProduto ["preco"] );
				
				$this->pedidoProdutoMapper->registrarProdutoDoPedido ( $novoProdutoPedido );
			
			}
		
		}
		
		$this->view->dadosPedido = $dadosPedido;
		
		session_destroy ();
	
	}
	
	public function alterarCadastroAction() {
		// action body
		
		if (! isset ( $_SESSION ["dadosUsuario"] ["id"] ))
			$this->_helper->redirector ( "index", "index" );
		
		$idUsuario = $_SESSION ["dadosUsuario"] ["id"];
		
		$usuario = $this->usuarioMapper->buscarUsuarioPeloId ( $idUsuario );
		
		$form = new Application_Form_EditarUsuario ();
		
		$form->populate ( $usuario [0] );
		
		$this->view->formulario = $form;
	
	}
	
	public function dadosAtualizadosAction() {
		// action body
		
		$params = $this->getRequest ()->getParams ();
				
		$usuarioAlterado = new Application_Model_Usuario ();
		
		$usuarioAlterado->setIdUsuario ($_SESSION["dadosUsuario"]["id"]);
		$usuarioAlterado->setNome ( $params ["nome"] );
		$usuarioAlterado->setEndereco ( $params ["endereco"] );
		
		
		$resultado = $this->usuarioMapper->editarUsuario ( $usuarioAlterado );
		
		if ($resultado){
			session_start();
			$_SESSION["aviso"]["usuarioAlterado"] = TRUE;
				
			$this->_helper->redirector("index");
		}
		
		

		
	
	}

}













